/*----------------------------------------------------------------------------*\
|
|						Public Interface to Muse Technology
|
|							     www.Muse.com
| Author : SunJun 
| Email : sundoom@msn.com
\*----------------------------------------------------------------------------*/

//////////////////////////////////////////////////////////////////////////
// $Id: Clear.h,v 1.2 2009/04/03 12:51:25 sunjun Exp $
//////////////////////////////////////////////////////////////////////////

#ifndef __Clear__
#define __Clear__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

#include <Operation.h>

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented clear interface.
	class API Clear : public Operation
	{
	public:
		#pragma pack(push,1)
		enum TYPE 
		{
			CT_TARGET	= 0x00000001l,
			CT_ZBUFFER	= 0x00000002l,
			CT_STENCIL	= 0x00000004l,
		};		
		#pragma pack(pop)

	public:
		// constructor
		Clear();
		
		// destructor
		virtual ~Clear();	

		// set the clear value
		INLINE VOID set( U32 type, U32 color, F32 z, U32 stencil );
		
	private:
		// implement the render operation
		INLINE VOID operator() (class Context*rc);

	private:
		U32 mType;
		U32 mColor;
		F32 mZ;
		U32 mStencil;
	};

	typedef MPtr<Clear>ClearPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Clear__

//////////////////////////////////////////////////////////////////////////